diff --git a/system/core/Config.php b/system/core/Config.php
index b7055c6..bdd1b83 100644
--- a/system/core/Config.php
+++ b/system/core/Config.php
@@ -43,7 +43,7 @@
 	 * @param   boolean  true if errors should just return false, false if an error message should be displayed
 	 * @return  boolean  if the file was successfully loaded or not
 	 */
-	function CI_Config()
+	function __construct()
 	{
 		$this->config =& get_config();
 		log_message('debug', "Config Class Initialized");
diff --git a/system/core/Exceptions.php b/system/core/Exceptions.php
index 26b24ef..32cb77b 100644
--- a/system/core/Exceptions.php
+++ b/system/core/Exceptions.php
@@ -50,9 +50,8 @@
 
 	/**
 	 * Constructor
-	 *
 	 */
-	function CI_Exceptions()
+	public function __construct()
 	{
 		$this->ob_level = ob_get_level();
 		// Note:  Do not log messages from this constructor.
diff --git a/system/core/Hooks.php b/system/core/Hooks.php
index 3f84194..70dc687 100644
--- a/system/core/Hooks.php
+++ b/system/core/Hooks.php
@@ -36,7 +36,7 @@
 	 * Constructor
 	 *
 	 */
-	function CI_Hooks()
+	function __construct()
 	{
 		$this->_initialize();
 		log_message('debug', "Hooks Class Initialized");
diff --git a/system/core/Input.php b/system/core/Input.php
index f959b28..0ce2d89 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -35,16 +35,14 @@
 	var $_enable_xss			= FALSE; // Set automatically based on config setting
 	var $_enable_csrf			= FALSE; // Set automatically based on config setting
 
-
 	/**
-	* Constructor
-	*
-	* Sets whether to globally enable the XSS processing
-	* and whether to allow the $_GET array
-	*
-	* @access	public
-	*/
-	function CI_Input()
+	 * Constructor
+	 *
+	 * Sets whether to globally enable the XSS processing
+	 * and whether to allow the $_GET array
+	 *
+	 */
+	public function __construct()
 	{
 		log_message('debug', "Input Class Initialized");
 
@@ -72,16 +70,16 @@
 	// --------------------------------------------------------------------
 
 	/**
-	* Fetch from array
-	*
-	* This is a helper function to retrieve values from global arrays
-	*
-	* @access	private
-	* @param	array
-	* @param	string
-	* @param	bool
-	* @return	string
-	*/
+	 * Fetch from array
+	 *
+	 * This is a helper function to retrieve values from global arrays
+	 *
+	 * @access	private
+	 * @param	array
+	 * @param	string
+	 * @param	bool
+	 * @return	string
+	 */
 	function _fetch_from_array(&$array, $index = '', $xss_clean = FALSE)
 	{
 		if ( ! isset($array[$index]))
diff --git a/system/core/Lang.php b/system/core/Lang.php
index a53a202..e7867b3 100644
--- a/system/core/Lang.php
+++ b/system/core/Lang.php
@@ -34,7 +34,7 @@
 	 *
 	 * @access	public
 	 */
-	function CI_Lang()
+	function __construct()
 	{
 		log_message('debug', "Language Class Initialized");
 	}
diff --git a/system/core/Loader.php b/system/core/Loader.php
index b64a6e6..5d4b259 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -50,7 +50,7 @@
 	 *
 	 * @access	public
 	 */
-	function CI_Loader()
+	function __construct()
 	{
 		$this->_ci_view_path = APPPATH.'views/';
 		$this->_ci_ob_level  = ob_get_level();
diff --git a/system/core/Output.php b/system/core/Output.php
index 2ded283..27a3a4b 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -37,7 +37,7 @@
 	var $_zlib_oc			= FALSE;
 	var $_profiler_sections = array();
 
-	function CI_Output()
+	function __construct()
 	{
 		$this->_zlib_oc = @ini_get('zlib.output_compression');
 
diff --git a/system/core/Router.php b/system/core/Router.php
index 06c8d48..9276800 100644
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -41,7 +41,7 @@
 	 *
 	 * Runs the route mapping function.
 	 */
-	function CI_Router()
+	function __construct()
 	{
 		$this->config =& load_class('Config', 'core');
 		$this->uri =& load_class('URI', 'core');
diff --git a/system/core/URI.php b/system/core/URI.php
index b8d48c5..b36593b 100644
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -28,7 +28,7 @@
  */
 class CI_URI {
 
-	var	$keyval	= array();
+	var	$keyval			= array();
 	var $uri_string;
 	var $segments		= array();
 	var $rsegments		= array();
@@ -42,7 +42,7 @@
 	 *
 	 * @access	public
 	 */
-	function CI_URI()
+	function __construct()
 	{
 		$this->config =& load_class('Config', 'core');
 		log_message('debug', "URI Class Initialized");
diff --git a/system/core/Unicode.php b/system/core/Unicode.php
index 20605ee..ce1de30 100644
--- a/system/core/Unicode.php
+++ b/system/core/Unicode.php
@@ -34,7 +34,7 @@
 	 * Determines if UTF-8 support is to be enabled
 	 *
 	 */
-	function CI_Unicode()
+	function __construct()
 	{
 		log_message('debug', "Unicode Class Initialized");
 
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 752ce25..59025cf 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -42,10 +42,8 @@
 	 * Constructor
 	 *
 	 * Loads the calendar language file and sets the default time reference
-	 *
-	 * @access	public
 	 */
-	function CI_Calendar($config = array())
+	public function __construct($config = array())
 	{
 		$this->CI =& get_instance();
 
diff --git a/system/libraries/Cart.php b/system/libraries/Cart.php
index f2121bc..5d3f91d 100644
--- a/system/libraries/Cart.php
+++ b/system/libraries/Cart.php
@@ -40,7 +40,7 @@
 	 *
 	 * The constructor loads the Session class, used to store the shopping cart contents.
 	 */
-	function CI_Cart($params = array())
+	public function __construct($params = array())
 	{
 		// Set the super object to a local variable for use later
 		$this->CI =& get_instance();
diff --git a/system/libraries/Driver.php b/system/libraries/Driver.php
index 2eb9c1e..8579a60 100644
--- a/system/libraries/Driver.php
+++ b/system/libraries/Driver.php
@@ -119,11 +119,10 @@
 	 *
 	 * Decorates the child with the parent driver lib's methods and properties
 	 *
-	 * @access	public
 	 * @param	object
 	 * @return	void
 	 */
-	function decorate($parent)
+	public function decorate($parent)
 	{
 		$this->parent = $parent;
 
@@ -191,11 +190,10 @@
 	 *
 	 * Handles reading of the parent driver library's properties
 	 *
-	 * @access	public
 	 * @param	string
 	 * @return	mixed
 	 */
-	function __get($var)
+	public function __get($var)
 	{
 		if (in_array($var, $this->properties))
 		{
@@ -210,12 +208,11 @@
 	 *
 	 * Handles writing to the parent driver library's properties
 	 *
-	 * @access	public
 	 * @param	string
 	 * @param	array
 	 * @return	mixed
 	 */
-	function __set($var, $val)
+	public function __set($var, $val)
 	{
 		if (in_array($var, $this->properties))
 		{
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index fbf494d..a09ca58 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -82,7 +82,7 @@
 	 *
 	 * The constructor can be passed an array of config values
 	 */
-	function CI_Email($config = array())
+	function __construct($config = array())
 	{
 		if (count($config) > 0)
 		{
diff --git a/system/libraries/Encrypt.php b/system/libraries/Encrypt.php
index f64c10c..7682f21 100644
--- a/system/libraries/Encrypt.php
+++ b/system/libraries/Encrypt.php
@@ -41,7 +41,7 @@
 	 * Simply determines whether the mcrypt library exists.
 	 *
 	 */
-	function CI_Encrypt()
+	public function __construct()
 	{
 		$this->CI =& get_instance();
 		$this->_mcrypt_exists = ( ! function_exists('mcrypt_encrypt')) ? FALSE : TRUE;
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index cab6f34..d62071b 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -39,9 +39,8 @@
 
 	/**
 	 * Constructor
-	 *
 	 */
-	function CI_Form_validation($rules = array())
+	public function __construct($rules = array())
 	{
 		$this->CI =& get_instance();
 
diff --git a/system/libraries/Ftp.php b/system/libraries/Ftp.php
index 4cf95ee..6ffbef1 100644
--- a/system/libraries/Ftp.php
+++ b/system/libraries/Ftp.php
@@ -40,7 +40,7 @@
 	 *
 	 * The constructor can be passed an array of config values
 	 */
-	function CI_FTP($config = array())
+	public function __construct($config = array())
 	{
 		if (count($config) > 0)
 		{
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index dec5f34..84c41c4 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -79,11 +79,10 @@
 	/**
 	 * Constructor
 	 *
-	 * @access	public
 	 * @param	string
 	 * @return	void
 	 */
-	function CI_Image_lib($props = array())
+	public function __construct($props = array())
 	{
 		if (count($props) > 0)
 		{
diff --git a/system/libraries/Javascript.php b/system/libraries/Javascript.php
index 8b7efd2..6fe365f 100644
--- a/system/libraries/Javascript.php
+++ b/system/libraries/Javascript.php
@@ -28,7 +28,7 @@
 
 	var $_javascript_location = 'js';
 
-	function CI_Javascript($params = array())
+	public function __construct($params = array())
 	{
 		$defaults = array('js_library_driver' => 'jquery', 'autoload' => TRUE);
 
diff --git a/system/libraries/Log.php b/system/libraries/Log.php
index d4a6871..6d44cfa 100644
--- a/system/libraries/Log.php
+++ b/system/libraries/Log.php
@@ -34,10 +34,8 @@
 
 	/**
 	 * Constructor
-	 *
-	 * @access	public
 	 */
-	function CI_Log()
+	public function __construct()
 	{
 		$config =& get_config();
 
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index e5a59ed..47b718b 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -65,7 +65,7 @@
 	 * @access	public
 	 * @param	array	initialization parameters
 	 */
-	function CI_Pagination($params = array())
+	public function __construct($params = array())
 	{
 		if (count($params) > 0)
 		{
diff --git a/system/libraries/Parser.php b/system/libraries/Parser.php
index f7320c5..5d9203a 100644
--- a/system/libraries/Parser.php
+++ b/system/libraries/Parser.php
@@ -42,7 +42,7 @@
 	 * @param	bool
 	 * @return	string
 	 */
-	function parse($template, $data, $return = FALSE)
+	public function __construct($template, $data, $return = FALSE)
 	{
 		$CI =& get_instance();
 		$template = $CI->load->view($template, $data, TRUE);
diff --git a/system/libraries/Security.php b/system/libraries/Security.php
index 0fa1428..d263856 100644
--- a/system/libraries/Security.php
+++ b/system/libraries/Security.php
@@ -51,7 +51,7 @@
 										"Redirect\s+302"			=> '[removed]'
 									);
 
-	function CI_Security()
+	public function __construct()
 	{
 		// Append application specific cookie prefix to token name
 		$this->csrf_cookie_name = (config_item('cookie_prefix')) ? config_item('cookie_prefix').$this->csrf_token_name : $this->csrf_token_name;
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index e7842d8..4dccc46 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -52,7 +52,7 @@
 	 * The constructor runs the session routines automatically
 	 * whenever the class is instantiated.
 	 */
-	function CI_Session($params = array())
+	public function __construct($params = array())
 	{
 		log_message('debug', "Session Class Initialized");
 
diff --git a/system/libraries/Sha1.php b/system/libraries/Sha1.php
index d9f0e39..a5addd0 100644
--- a/system/libraries/Sha1.php
+++ b/system/libraries/Sha1.php
@@ -44,7 +44,7 @@
  */
 class CI_SHA {
 
-	function CI_SHA()
+	public function __construct()
 	{
 		log_message('debug', "SHA1 Class Initialized");
 	}
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 82d0a3e..a57781c 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -37,7 +37,7 @@
 	var $empty_cells		= "";
 	var	$function			= FALSE;
 
-	function CI_Table()
+	public function __construct()
 	{
 		log_message('debug', "Table Class Initialized");
 	}
diff --git a/system/libraries/Trackback.php b/system/libraries/Trackback.php
index c235094..79f512b 100644
--- a/system/libraries/Trackback.php
+++ b/system/libraries/Trackback.php
@@ -40,7 +40,7 @@
 	 *
 	 * @access	public
 	 */
-	function CI_Trackback()
+	public function __construct()
 	{
 		log_message('debug', "Trackback Class Initialized");
 	}
diff --git a/system/libraries/Typography.php b/system/libraries/Typography.php
index e087085..2ea25e4 100644
--- a/system/libraries/Typography.php
+++ b/system/libraries/Typography.php
@@ -45,14 +45,6 @@
 	var $protect_braced_quotes = FALSE;
 
 	/**
-	 * Nothing to do here...
-	 *
-	 */
-	function CI_Typography()
-	{
-	}
-
-	/**
 	 * Auto Typography
 	 *
 	 * This function converts text, making it typographically correct:
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index 2f6067b..a57934c 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -35,7 +35,7 @@
 	var $_template_rows			= NULL;
 	var $_test_items_visible	= array();
 
-	function CI_Unit_test()
+	public function __construct()
 	{
 		// These are the default items visible when a test is run.
 		$this->_test_items_visible = array (
diff --git a/system/libraries/User_agent.php b/system/libraries/User_agent.php
index a780ec2..c1fb023 100644
--- a/system/libraries/User_agent.php
+++ b/system/libraries/User_agent.php
@@ -56,7 +56,7 @@
 	 * @access	public
 	 * @return	void
 	 */
-	function CI_User_agent()
+	public function __construct()
 	{
 		if (isset($_SERVER['HTTP_USER_AGENT']))
 		{
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index 44cdffe..3ae5bad 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -69,7 +69,7 @@
 	//  VALUES THAT MULTIPLE CLASSES NEED
 	//-------------------------------------
 
-	function CI_Xmlrpc ($config = array())
+	public function __construct($config = array())
 	{
 		$this->xmlrpcName		= $this->xmlrpcName;
 		$this->xmlrpc_backslash = chr(92).chr(92);
@@ -360,9 +360,9 @@
 	var $timeout		= 5;
 	var $no_multicall	= false;
 
-	function XML_RPC_Client($path, $server, $port=80)
+	public function __construct($path, $server, $port=80)
 	{
-		parent::CI_Xmlrpc();
+		parent::__construct();
 
 		$this->port = $port;
 		$this->server = $server;
@@ -436,7 +436,7 @@
 	var $headers = array();
 	var $xss_clean = TRUE;
 
-	function XML_RPC_Response($val, $code = 0, $fstr = '')
+	public function __construct($val, $code = 0, $fstr = '')
 	{
 		if ($code != 0)
 		{
@@ -621,9 +621,9 @@
 	var $params			= array();
 	var $xh				= array();
 
-	function XML_RPC_Message($method, $pars=0)
+	public function __construct($method, $pars=0)
 	{
-		parent::CI_Xmlrpc();
+		parent::__construct();
 
 		$this->method_name = $method;
 		if (is_array($pars) && count($pars) > 0)
@@ -1223,9 +1223,9 @@
 	var $me		= array();
 	var $mytype	= 0;
 
-	function XML_RPC_Values($val=-1, $type='')
+	public function __construct($val=-1, $type='')
 	{
-		parent::CI_Xmlrpc();
+		parent::__construct();
 
 		if ($val != -1 OR $type != '')
 		{
diff --git a/system/libraries/Xmlrpcs.php b/system/libraries/Xmlrpcs.php
index 14e10d2..555ec74 100644
--- a/system/libraries/Xmlrpcs.php
+++ b/system/libraries/Xmlrpcs.php
@@ -43,14 +43,12 @@
 
 	var $object			= FALSE;
 
-
-	//-------------------------------------
-	//  Constructor, more or less
-	//-------------------------------------
-
-	function CI_Xmlrpcs($config=array())
+	/**
+	 * Constructor
+	 */
+	public function __construct($config=array())
 	{
-		parent::CI_Xmlrpc();
+		parent::__construct();
 		$this->set_system_methods();
 
 		if (isset($config['functions']) && is_array($config['functions']))
diff --git a/system/libraries/Zip.php b/system/libraries/Zip.php
index aa5cf13..94da4b3 100644
--- a/system/libraries/Zip.php
+++ b/system/libraries/Zip.php
@@ -39,7 +39,10 @@
 	var $offset		= 0;
 	var $now;
 
-	function CI_Zip()
+	/**
+	 * Constructor
+	 */
+	public function __construct()
 	{
 		log_message('debug', "Zip Compression Class Initialized");
 
diff --git a/system/libraries/javascript/Jquery.php b/system/libraries/javascript/Jquery.php
index db80c14..91148dc 100644
--- a/system/libraries/javascript/Jquery.php
+++ b/system/libraries/javascript/Jquery.php
@@ -34,7 +34,7 @@
 	var $jquery_table_sorter_pager_active = FALSE;
 	var $jquery_ajax_img = '';
 
-	function Jquery($params)
+	public function __construct($params)
 	{
 		$this->CI =& get_instance();	
 		extract($params);
